package com.esun.api.interfaces;

import com.esun.api.request.ExampleRequestDto;
import com.esun.common.response.RestResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


/**
 * 样例表(Example)Api声明接口
 *
 * @author John.xiao
 * @date 2021-08-17 14:36:46
 */

 public interface IExampleApi {
   
    
    /**
	 *样例表(Example)分页查询
	 *
	 * @param pageIndex  页码数
	 * @param pageSize   分页大小

	 * @return 查询结果
	 */
	@GetMapping("get/page")
	RestResponse getExampleByPage(@RequestParam(value = "pageIndex", required = false, defaultValue = "1") int pageIndex,
	                              @RequestParam(value = "pageSize", required = false, defaultValue = "20") int pageSize);


	/**
	 * 批量新增样例表(Example)
	 *
	 * @param requestDtoList 样例表(Example)请求实体列表
	 * @return 新增结果
	 */
	@PostMapping("list/add")
	RestResponse addExample(@RequestBody(required = false) List<ExampleRequestDto> requestDtoList);

	/**
	 * 批量修改样例表(Example)信息
	 *
	 * @param requestDtoList 薪资请求实体列表
	 * @return 修改结果
	 */
	@PutMapping("list/update")
	RestResponse updateExample(@RequestBody(required = false) List<ExampleRequestDto> requestDtoList);

	/**
	 * 批量删除样例表(Example)信息
	 *
	 * @param requestDtoList 薪资请求实体列表
	 * @return 删除结果
	 */
	@DeleteMapping("list/delete")
	RestResponse deleteExample(@RequestBody(required = false) List<ExampleRequestDto> requestDtoList);

	/**
	 * 通过Excel文件导入样例表(Example)信息
	 * 导入操作为插入或更新数据
	 *
	 * @param file 上传的文件
	 * @return 结果封装类
	 */
	@PostMapping("import")
	RestResponse importExample(MultipartFile file);

	/**
	 * 根据条件查询数据，然后通过Excel表格导出
	 * 导出文件将会在本地服务器保存一份
	 *
	 * @param requestDto 用户请求实体
	 */
	@PostMapping("export")
	void exportExample(@RequestBody ExampleRequestDto requestDto);

	/**
	 * 下载导入模板
	 * 请求该接口将自动通过输出流下载导出文件
	 *
	 * @param path 模板路径
	 */
	@GetMapping("download/template")
	void downloadTemplate(@RequestParam(value = "path", required = false, defaultValue = "D:/template/样例表导入模板.xlsx") String path);
}